home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / ixemlsrc.lha / ixemul / utils / ixprefs.c < prev    next >
C/C++ Source or Header  |  1995-12-23  |  9KB  |  317 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Kriton Kyrimis
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #include <pragmas/exec_pragmas.h>
  26. #include <pragmas/intuition_pragmas.h>
  27. #include <pragmas/gadtools_pragmas.h>
  28. #include <pragmas/graphics_pragmas.h>
  29. #include <pragmas/utility_pragmas.h>
  30.  
  31. #include "ixprefs.h"
  32.  
  33. struct Screen         *Scr = NULL;
  34. UBYTE                 *PubScreenName = NULL;
  35. APTR                   VisualInfo = NULL;
  36. struct Window         *ixprefsWnd = NULL;
  37. struct Gadget         *ixprefsGList = NULL;
  38. struct Menu           *ixprefsMenus = NULL;
  39. struct IntuiMessage    ixprefsMsg;
  40. struct Gadget         *ixprefsGadgets[14];
  41. UWORD                  ixprefsLeft = 0;
  42. UWORD                  ixprefsTop = 11;
  43. UWORD                  ixprefsWidth = 509;
  44. UWORD                  ixprefsHeight = 116;
  45. UBYTE                 *ixprefsWdt = (UBYTE *)"ixprefs";
  46. struct TextAttr       *Font, Attr;
  47. UWORD                  FontX, FontY;
  48. UWORD                  OffX, OffY;
  49. struct TextFont       *ixprefsFont = NULL;
  50.  
  51. UBYTE *networking0Labels[] = {
  52.     (UBYTE *)"Auto detect",
  53.     (UBYTE *)"No networking",
  54.     (UBYTE *)"AS225",
  55.     (UBYTE *)"AmiTCP",
  56.     NULL };
  57.  
  58. struct NewMenu ixprefsNewMenu[] = {
  59.     NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
  60.     NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, (APTR)ixprefssave,
  61.     NM_ITEM, (STRPTR)"Use", (STRPTR)"U", 0, 0L, (APTR)ixprefsuse,
  62.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  63.     NM_ITEM, (STRPTR)"About", (STRPTR)"?", 0, 0L, (APTR)ixprefsabout,
  64.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  65.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)ixprefsquit,
  66.     NM_TITLE, (STRPTR)"Edit", NULL, 0, NULL, NULL,
  67.     NM_ITEM, (STRPTR)"Reset to defaults", (STRPTR)"D", 0, 0L, (APTR)ixprefsreset,
  68.     NM_ITEM, (STRPTR)"Last Saved", (STRPTR)"L", 0, 0L, (APTR)ixprefslast,
  69.     NM_ITEM, (STRPTR)"Restore", (STRPTR)"R", 0, 0L, (APTR)ixprefsrestore,
  70.     NM_END, NULL, NULL, 0, 0L, NULL };
  71.  
  72. UWORD ixprefsGTypes[] = {
  73.     BUTTON_KIND,
  74.     BUTTON_KIND,
  75.     BUTTON_KIND,
  76.     CHECKBOX_KIND,
  77.     INTEGER_KIND,
  78.     INTEGER_KIND,
  79.     CHECKBOX_KIND,
  80.     INTEGER_KIND,
  81.     CHECKBOX_KIND,
  82.     CHECKBOX_KIND,
  83.     CHECKBOX_KIND,
  84.     CHECKBOX_KIND,
  85.     CHECKBOX_KIND,
  86.     CYCLE_KIND
  87. };
  88.  
  89. struct NewGadget ixprefsNGad[] = {
  90.     5, 100, 63, 11, (UBYTE *)"Save", NULL, GD_savegad, PLACETEXT_IN, NULL, (APTR)savegadClicked,
  91.     221, 100, 63, 11, (UBYTE *)"Use", NULL, GD_usegad, PLACETEXT_IN, NULL, (APTR)usegadClicked,
  92.     442, 100, 63, 11, (UBYTE *)"Cancel", NULL, GD_cancelgad, PLACETEXT_IN, NULL, (APTR)cancelgadClicked,
  93.     4, 15, 26, 11, (UBYTE *)"Translate /", NULL, GD_translateslash, PLACETEXT_RIGHT, NULL, (APTR)translateslashClicked,
  94.     4, 54, 60, 12, (UBYTE *)"Membuf size", NULL, GD_membuf, PLACETEXT_RIGHT, NULL, (APTR)membufClicked,
  95.     4, 67, 60, 12, (UBYTE *)"Red zone size", NULL, GD_redzone, PLACETEXT_RIGHT, NULL, (APTR)redzoneClicked,
  96.     4, 28, 26, 11, (UBYTE *)"Enable stack watcher", NULL, GD_watcher, PLACETEXT_RIGHT, NULL, (APTR)watcherClicked,
  97.     4, 80, 60, 12, (UBYTE *)"Physical blocks build one logical block (for stdio)", NULL, GD_blocks, PLACETEXT_RIGHT, NULL, (APTR)blocksClicked,
  98.     215, 2, 26, 11, (UBYTE *)"Case sensitive pattern matching", NULL, GD_case, PLACETEXT_RIGHT, NULL, (APTR)caseClicked,
  99.     4, 41, 26, 11, (UBYTE *)"Suppress the \"Insert volume in drive\" requester", NULL, GD_suppress, PLACETEXT_RIGHT, NULL, (APTR)suppressClicked,
  100.     4, 2, 26, 11, (UBYTE *)"Allow Amiga wildcards", NULL, GD_amigawildcard, PLACETEXT_RIGHT, NULL, (APTR)amigawildcardClicked,
  101.     215, 15, 26, 11, (UBYTE *)"Do not flush library", NULL, GD_noflush, PLACETEXT_RIGHT, NULL, (APTR)noflushClicked,
  102.     215, 28, 26, 11, (UBYTE *)"Ignore global environment (ENV:)", NULL, GD_ignoreenv, PLACETEXT_RIGHT, NULL, (APTR)ignoreenvClicked,
  103.     215, 54, 161, 13, (UBYTE *)"Network support", NULL, GD_networking, PLACETEXT_RIGHT, NULL, (APTR)networkingClicked
  104. };
  105.  
  106. ULONG ixprefsGTags[] = {
  107.     (TAG_DONE),
  108.     (TAG_DONE),
  109.     (TAG_DONE),
  110.     (TAG_DONE),
  111.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  112.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  113.     (TAG_DONE),
  114.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  115.     (TAG_DONE),
  116.     (TAG_DONE),
  117.     (TAG_DONE),
  118.     (TAG_DONE),
  119.     (TAG_DONE),
  120.     (GTCY_Labels), (ULONG)&networking0Labels[ 0 ], (TAG_DONE)
  121. };
  122.  
  123. static UWORD ComputeX( UWORD value )
  124. {
  125.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  126. }
  127.  
  128. static UWORD ComputeY( UWORD value )
  129. {
  130.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  131. }
  132.  
  133. static void ComputeFont( UWORD width, UWORD height )
  134. {
  135.     Forbid();
  136.     Font = &Attr;
  137.     Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  138.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  139.     FontX = GfxBase->DefaultFont->tf_XSize;
  140.     Permit();
  141.  
  142.     OffX = Scr->WBorLeft;
  143.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  144.  
  145.     if ( width && height ) {
  146.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  147.             goto UseTopaz;
  148.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  149.             goto UseTopaz;
  150.     }
  151.     return;
  152.  
  153. UseTopaz:
  154.     Font->ta_Name = (STRPTR)"topaz.font";
  155.     FontX = FontY = Font->ta_YSize = 8;
  156. }
  157.  
  158. int SetupScreen( void )
  159. {
  160.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  161.         return( 1L );
  162.  
  163.     ComputeFont( 0, 0 );
  164.  
  165.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  166.         return( 2L );
  167.  
  168.     return( 0L );
  169. }
  170.  
  171. void CloseDownScreen( void )
  172. {
  173.     if ( VisualInfo ) {
  174.         FreeVisualInfo( VisualInfo );
  175.         VisualInfo = NULL;
  176.     }
  177.  
  178.     if ( Scr        ) {
  179.         UnlockPubScreen( NULL, Scr );
  180.         Scr = NULL;
  181.     }
  182. }
  183.  
  184. int HandleixprefsIDCMP( void )
  185. {
  186.     struct IntuiMessage    *m;
  187.     struct MenuItem        *n;
  188.     int            (*func)();
  189.     BOOL            running = TRUE;
  190.  
  191.     while( m = GT_GetIMsg( ixprefsWnd->UserPort )) {
  192.  
  193.         CopyMem(( char * )m, ( char * )&ixprefsMsg, (long)sizeof( struct IntuiMessage ));
  194.  
  195.         GT_ReplyIMsg( m );
  196.  
  197.         switch ( ixprefsMsg.Class ) {
  198.  
  199.             case    IDCMP_REFRESHWINDOW:
  200.                 GT_BeginRefresh( ixprefsWnd );
  201.                 GT_EndRefresh( ixprefsWnd, TRUE );
  202.                 break;
  203.  
  204.             case    IDCMP_CLOSEWINDOW:
  205.                 running = ixprefsCloseWindow();
  206.                 break;
  207.  
  208.             case    IDCMP_GADGETUP:
  209.                 func = ( void * )(( struct Gadget * )ixprefsMsg.IAddress )->UserData;
  210.                 running = func();
  211.                 break;
  212.  
  213.             case    IDCMP_MENUPICK:
  214.                 while( ixprefsMsg.Code != MENUNULL ) {
  215.                     n = ItemAddress( ixprefsMenus, ixprefsMsg.Code );
  216.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  217.                     running = func();
  218.                     ixprefsMsg.Code = n->NextSelect;
  219.                 }
  220.                 break;
  221.         }
  222.     }
  223.     return( running );
  224. }
  225.  
  226. int OpenixprefsWindow( void )
  227. {
  228.     struct NewGadget    ng;
  229.     struct Gadget    *g;
  230.     UWORD        lc, tc;
  231.     UWORD        wleft = ixprefsLeft, wtop = ixprefsTop, ww, wh;
  232.  
  233.     ComputeFont( ixprefsWidth, ixprefsHeight );
  234.  
  235.     ww = ComputeX( ixprefsWidth );
  236.     wh = ComputeY( ixprefsHeight );
  237.  
  238.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  239.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  240.  
  241.     if ( ! ( ixprefsFont = OpenDiskFont( Font )))
  242.         return( 5L );
  243.  
  244.     if ( ! ( g = CreateContext( &ixprefsGList )))
  245.         return( 1L );
  246.  
  247.     for( lc = 0, tc = 0; lc < ixprefs_CNT; lc++ ) {
  248.  
  249.         CopyMem((char * )&ixprefsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  250.  
  251.         ng.ng_VisualInfo = VisualInfo;
  252.         ng.ng_TextAttr   = Font;
  253.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  254.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  255.         ng.ng_Width      = ComputeX( ng.ng_Width );
  256.         ng.ng_Height     = ComputeY( ng.ng_Height);
  257.  
  258.         ixprefsGadgets[ lc ] = g = CreateGadgetA((ULONG)ixprefsGTypes[ lc ], g, &ng, ( struct TagItem * )&ixprefsGTags[ tc ] );
  259.  
  260.         while( ixprefsGTags[ tc ] ) tc += 2;
  261.         tc++;
  262.  
  263.         if ( NOT g )
  264.             return( 2L );
  265.     }
  266.  
  267.     if ( ! ( ixprefsMenus = CreateMenus( ixprefsNewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  268.         return( 3L );
  269.  
  270.     LayoutMenus( ixprefsMenus, VisualInfo, TAG_DONE );
  271.  
  272.     if ( ! ( ixprefsWnd = OpenWindowTags( NULL,
  273.                 WA_Left,    wleft,
  274.                 WA_Top,        wtop,
  275.                 WA_Width,    ww + OffX + Scr->WBorRight,
  276.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  277.                 WA_IDCMP,    BUTTONIDCMP|CHECKBOXIDCMP|INTEGERIDCMP|CYCLEIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  278.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  279.                 WA_Gadgets,    ixprefsGList,
  280.                 WA_Title,    ixprefsWdt,
  281.                 WA_ScreenTitle,    "ixprefs",
  282.                 WA_PubScreen,    Scr,
  283.                 WA_AutoAdjust,    TRUE,
  284.                 WA_PubScreenFallBack,    TRUE,
  285.                 TAG_DONE )))
  286.     return( 4L );
  287.  
  288.     SetMenuStrip( ixprefsWnd, ixprefsMenus );
  289.     GT_RefreshWindow( ixprefsWnd, NULL );
  290.  
  291.     return( 0L );
  292. }
  293.  
  294. void CloseixprefsWindow( void )
  295. {
  296.     if ( ixprefsMenus      ) {
  297.         ClearMenuStrip( ixprefsWnd );
  298.         FreeMenus( ixprefsMenus );
  299.         ixprefsMenus = NULL;    }
  300.  
  301.     if ( ixprefsWnd        ) {
  302.         CloseWindow( ixprefsWnd );
  303.         ixprefsWnd = NULL;
  304.     }
  305.  
  306.     if ( ixprefsGList      ) {
  307.         FreeGadgets( ixprefsGList );
  308.         ixprefsGList = NULL;
  309.     }
  310.  
  311.     if ( ixprefsFont ) {
  312.         CloseFont( ixprefsFont );
  313.         ixprefsFont = NULL;
  314.     }
  315. }
  316.  
  317.